package cn.tedu.file;
import java.io.*;
//测试 字节读取流
//总结：
//1  字节流读取：FileInputStrean / BufferedFileInputStream
//2  效率上讲 BufferedFileInputStream  > FileInputStrean
//3  原因是 BufferedInputStream底层维护了一个 byte []buf
//当数组满了之后才一次性从流里读进来，默认的数组容量是8192字节相当于8k
//4 读取想要高效，一般使用BufferedInputStream.也叫缓冲流/高级流

//InputStream读取
public class Test3_in {
    public static void main(String[] args) throws IOException {
//        method();//FileInputStrean读取
        method2();//BufferedInputStream

    }
    ////BufferedFileInputStream读取---高效/缓冲流/高级流
    public static void method2() throws IOException {
        InputStream in3 = new BufferedInputStream(new FileInputStream("F:\\天天向上\\1.txt") );
//        int data1 = in3.read();
//        System.out.println(data1);
        int b=0;
        while((b = in3.read())!=-1){
            System.out.println(b);
        }
        in3.close();
    }
    ////FileInputStream读取
    public static void method() throws IOException {
        //1 创建多态对象
//        FileInputStream(String name)
//        FileInputStream(File file)
        InputStream in = new FileInputStream("F:\\天天向上\\1.txt");
        InputStream in2 = new FileInputStream(new File("F:\\天天向上\\1.txt"));
        //2 读取数据
//        //TODO read()从读取流中一个一个字节的读取
//        int data = in.read();
//        System.out.println(data);
//        int data2 = in.read();
//        System.out.println(data2);
//        int data3 = in.read();
//        System.out.println(data3);
//        int data4 = in.read();
//        System.out.println(data4);
//        //TODO 没有数据的话，会读到什么呢？--永远是-1
//        int data5 = in.read();
//        System.out.println(data5);
        //TODO 改造读取的过程
        int b=0;//记录变量，记录读到的数据
        while((b= in.read())!=-1){//如果没有数据另外就会读到-1，就会结束
            System.out.println(b);//打印读到的数据
        }
        //释放资源
        in.close();
        //TODO 当资源被释放后，不能再读了,否则会抛出异常
        int data5 = in.read();
    }
}
